<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>在线测试</title>
    <link href="http://localhost:8080/static/layui/css/layui.css" rel="stylesheet">
    <style>
        body {
            padding: 6px 16px;
        }

        .demo-carousel {
            height: 200px;
            line-height: 200px;
            text-align: center;
        }
    </style>
</head>
<body>


<table class="layui-hide" id="demo" lay-filter="test"></table>

<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
    <a class="layui-btn layui-btn-xs" lay-event="more">更多 <i class="layui-icon layui-icon-down"></i></a>
</script>

<script type="text/html" id="searchDemo">
    <div class="demoTable">
        <form class="layui-form" action="">
            <label class="layui-form-label">用户名:</label>
            <div class="layui-inline">
                <input class="layui-input" name="userName" id="userName" autocomplete="off">
            </div>

            <div class="layui-inline">
                <label class="layui-form-label">城市:</label>
                <div class="layui-input-block">
                    <select name="city" id="city">
                        <option value="-1">请选择</option>
                        <option value="0">北京</option>
                        <option value="1">上海</option>
                        <option value="2">广州</option>
                        <option value="3">深圳</option>
                        <option value="4">杭州</option>
                    </select>
                </div>
            </div>
            <button class="layui-btn" data-type="reload" lay-event="search">搜索</button>
        </form>
    </div>
</script>


<script src="http://localhost:8080/static/layui/layui.js"></script>
<script src="http://localhost:8080/static/js/jquery-3.6.3.js"></script>
<script>
    layui.use(function () {
        // 得到需要的内置组件
        let layer = layui.layer; //弹层
        let laypage = layui.laypage; //分页
        let laydate = layui.laydate; //日期
        let table = layui.table; //表格
        let carousel = layui.carousel; //轮播
        let upload = layui.upload; //上传
        let element = layui.element; //元素操作
        let slider = layui.slider; //滑块
        let dropdown = layui.dropdown; //下拉菜单

        // 向世界问个好
        // layer.msg('Hello World');   //相当于 alert();

        // Tab 切换
        element.on('tab(demo)', function (data) {
            layer.tips('切换了 ' + data.index + '：' + this.innerHTML, this, {
                tips: 1
            });
        });

        // 执行一个 table 实例
        table.render({
            elem: '#demo'
            , height: 420
            , url: 'http://localhost:8080/user/queryTUserinfoByInfo.do' //数据接口（此处为静态数据，仅作演示）
            , title: '用户表'
            , page: true //开启分页
            , toolbar: '#searchDemo' //开启工具栏，此处显示默认图标，可以自定义模板，详见文档, toolbar: 'default' //开启工具栏，此处显示默认图标，可以自定义模板，详见文档
         //   , totalRow: true //开启合计行
            , limit: 5     //每页显示行数
            , limits: [5, 10, 15, 20, 25, 30]   //分页下拉框参数组
            , cols: [[ //表头
                {type: 'checkbox', fixed: 'left'}
                , {field: 'id', title: 'ID', width: 80, sort: true, fixed: 'left', totalRow: '合计：'}
                , {field: 'userName', title: '用户名', width: 80, edit: 'text'}
                , {
                    field: 'experience',
                    title: '积分',
                    width: 90,
                    sort: true,
                    totalRow: '{{= d.TOTAL_NUMS }}',
                    edit: 'text'
                }
                , {field: 'sex', title: '性别', width: 80, sort: true}
                , {field: 'score', title: '评分', width: 80, sort: true, totalRow: true, edit: 'text'}
                , {field: 'city', title: '城市', width: 150, edit: 'text'}
                , {field: 'sign', title: '签名', width: 200}
                , {field: 'classify', title: '职业', width: 100}
                , {field: 'words', title: '字数', width: 135, sort: true, totalRow: true}
                , {fixed: 'right', title: '操作', width: 150, align: 'center', toolbar: '#barDemo'}
            ]],
            id : "testReload",
            where : {
                userName : $("#userName").val(),
                city : $("#city").val()
            }
        });

        // 查询
        element.on('search(demo)', function (data) {

        });

        // table行内编辑  ***
        table.on('edit(test)', function (obj) {
            console.log(obj.data);
            console.log(obj.value);
            console.log(obj.field);
            $.ajax({
                url: "http://localhost:8080/user/updateTUserinfoById.do",
                data: obj.data,
                success: function (res) {
                    console.log(res);
                    // parent.location.reload();
                },
                error: function () {
                    console.log("table.on('edit(test)' err....");
                }
            });
        });

        // 头工具栏事件
        table.on('toolbar(test)', function (obj) {
            let checkStatus = table.checkStatus(obj.config.id)
                , data = checkStatus.data; //获取选中的数据
            switch (obj.event) {
                case 'add':
                    // layer.msg('添加');
                    layer.open({
                        type: 2,    // 页面
                        // area : ["600px","500px"],
                        area: ["60%", "80%"],
                        //这里content是一个URL，如果你不想让iframe出现滚动条，你还可以content: ['http://sentsin.com', 'no']
                        content: 'http://localhost:8080/static/layui_user_add.html'
                    });
                    break;
                case 'update':
                    if (data.length === 0) {
                        layer.msg('请选择一行');
                    } else if (data.length > 1) {
                        layer.msg('只能同时编辑一个');
                    } else {
                        layer.alert('编辑 [id]：' + checkStatus.data[0].id);
                    }
                    break;
                case 'delete':
                    if (data.length === 0) {
                        layer.msg('请选择一行');
                    } else {
                        layer.msg('删除');
                    }
                    break;
                case 'search':   //查询事件监听  lay-event="search"
                    let searchName = $('#userName').val();
                    let searchCity = $("#city").val();
                    table.reload('testReload',{
                        page: {
                            curr: 1 //重新从第 1 页开始
                        },
                        where: {
                            userName: searchName,
                            city : searchCity
                        }
                    });

                   //重加载后，重新赋值上次搜索的内容
                  $('#userName').val(searchName);
               //   $("#city").text(searchCity);

            }
            ;
        });

        // 单元格工具事件
        table.on('tool(test)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
            let data = obj.data //获得当前行数据
                , layEvent = obj.event; //获得 lay-event 对应的值
            if (layEvent === 'detail') {
                // layer.msg('查看操作');
                //   layer.msg(data.toString());  // string字符内容
                layer.msg(JSON.stringify(data));  //json格式
            } else if (layEvent === 'more') {
                //下拉菜单
                dropdown.render({
                    elem: this //触发事件的 DOM 对象
                    , show: true //外部事件触发即显示
                    , data: [{
                        title: '编辑'
                        , id: 'edit'
                    }, {
                        title: '删除'
                        , id: 'del'
                    }]
                    , click: function (menudata) {
                        if (menudata.id === 'del') {
                            layer.confirm('真的删除行么', function (index) {
                                obj.del(); //删除对应行（tr）的DOM结构
                                layer.close(index);
                                //向服务端发送删除指令
                            });
                        } else if (menudata.id === 'edit') {
                            //  layer.msg('编辑操作，当前行 ID:' + data.id);
                            layer.msg('编辑操作，当前行 ID:' + JSON.stringify(data));
                            $.ajax({
                                url: "http://localhost:8080/layUi/edit.do",
                                data: {"username": data.username},
                                type: "post",
                                dataType: "json",
                                success: function (res) {
                                    console.log(res);
                                },
                                error: function () {
                                    console.log("menudata.id === 'edit' err....");
                                }
                            });
                        }
                    }
                    , align: 'right' //右对齐弹出
                    , style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
                })
            }
        });

        // 执行一个轮播实例
        carousel.render({
            elem: '#test1'
            , width: '100%' //设置容器宽度
            , height: 200
            , arrow: 'none' //不显示箭头
            , anim: 'fade' //切换动画方式
        });

        // 将日期直接嵌套在指定容器中
        let dateIns = laydate.render({
            elem: '#laydateDemo'
            , position: 'static'
            , calendar: true //是否开启公历重要节日
            , mark: { //标记重要日子
                '0-10-14': '生日'
                , '2020-01-18': '小年'
                , '2020-01-24': '除夕'
                , '2020-01-25': '春节'
                , '2020-02-01': '上班'
            }
            , done: function (value, date, endDate) {
                if (date.year == 2017 && date.month == 11 && date.date == 30) {
                    dateIns.hint('一不小心就月底了呢');
                }
            }
            , change: function (value, date, endDate) {
                layer.msg(value)
            }
        });

        // 分页
        laypage.render({
            elem: 'pageDemo' //分页容器的id
            , count: 1000 //数据总数
            , limit: 10 //每页显示的数据条数
            , skin: '#1E9FFF' //自定义选中色值
            //,layout: ['prev', 'page', 'next', 'count', 'limit', 'refresh', 'skip'] //自定义排版
            , jump: function (obj, first) {
                if (!first) {
                    layer.msg('第' + obj.curr + '页', {offset: 'b'});
                }
            }
        });

        // 上传
        upload.render({
            elem: '#uploadDemo'
            , url: '' //此处配置你自己的上传接口即可
            , done: function (res) {
                layer.msg('上传成功');
                layui.$('#uploadDemoView').removeClass('layui-hide').find('img').attr('src', res.files.file);
                console.log(res)
            }
            , before: function () {
                layer.msg('上传中', {icon: 16, time: 0});
            }
        });

        // 滑块
        let sliderInst = slider.render({
            elem: '#sliderDemo'
            , input: true //输入框
        });

        // 底部信息
        let footerTpl = lay('#footer')[0].innerHTML;
        lay('#footer').html(layui.laytpl(footerTpl).render({}))
            .removeClass('layui-hide');
    });
</script>
</body>
</html>
